perm filename VERTI.SAI[PUB,ALS] blob
sn#645421 filedate 1985-11-15 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00010 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGOF("VERTI")
C00003 00003 PUBLIC SIMPLE PROCEDURE VERTI! $"#
C00004 00004 PUBLIC SIMPLE BOOLEAN PROCEDURE DIMENSIONED(INTEGER DEFAULT REFERENCE INTEGER K) $"#
C00005 00005 PUBLIC SIMPLE PROCEDURE DPREFACE $"#
C00006 00006 PUBLIC RECURSIVE PROCEDURE DSKIP(BOOLEAN GRPSKIP) $"#
C00008 00007 PUBLIC SIMPLE PROCEDURE DSPACING $"#
C00009 00008 PUBLIC RECURSIVE PROCEDURE SKIPLINES(INTEGER HMLINES) $"#
C00010 00009 PUBLIC RECURSIVE PROCEDURE TOLINE(INTEGER LINENO) $"#
C00011 00010 FINISHED
C00012 ENDMK
C⊗;
BEGOF("VERTI")
COMMENT
Skipping vertically down the page. This is short now, but it is
expected to grow with special features for high-resolution devices ;
;
PROCEDURES
PUBLIC SIMPLE PROCEDURE VERTI! ;$"#
BEGIN "VERTI!"
SPREADM ← PREFMODE ;
LEADNM ← LEADFM ← 0 ; TES 11/2/74 ;
MLEADNM ← MLEADFM ← MSPREADM ← MILLVERTIDEFAULT ; TES 11/2/74 ;
END "VERTI!" ;
PUBLIC SIMPLE BOOLEAN PROCEDURE DIMENSIONED(INTEGER DEFAULT; REFERENCE INTEGER K) ;$"#
BEGIN "DIMENSIONED"
K ← CVD(E("0"+DEFAULT, NULL)) ;
IF ITS(MILLS) OR ITS(MILL) THEN BEGIN PASS ; RETURN(TRUE) END ;
IF ITS(INCHES) OR ITS(INCH) THEN BEGIN PASS ; K←1000*K ; RETURN(TRUE) END ;
IF ITS(LINE) OR ITS(LINES) THEN PASS ;
RETURN(FALSE) ;
END "DIMENSIONED" ;
PUBLIC SIMPLE PROCEDURE DPREFACE ;$"#
BEGIN "DPREFACE" TES 11/2/74 ;
INTEGER L, M ;
DBREAK ;
PASS ;
IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
M ← ABS(MILLVERTI) ;
IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
IF NOFILL THEN BEGIN MLEADNM ← M ; LEADNM ← L END
ELSE BEGIN MLEADFM ← M ; LEADFM ← L END ;
END "DPREFACE" ;
PUBLIC RECURSIVE PROCEDURE DSKIP(BOOLEAN GRPSKIP) ;$"#
BEGIN
BOOLEAN GM ;
DBREAK ; PASS ;
IF GRPSKIP THEN BEGIN SAVEXGEN; GM←GROUPM ; GROUPM ←1 ; END ;
IF ITS(TO) THEN
BEGIN "SKIP TO"
DAPART ; PASS ;
IF ITS(COLUMN) THEN BEGIN PASS; TOCOLUMN(CVD(E(CVS(COL+1),NULL))) END
ELSE BEGIN IF ITS(LINE) THEN PASS ; TOLINE(CVD(E("1", NULL))) END ;
END "SKIP TO"
ELSE BEGIN
IF THISTYPE>INTERNTYPE OR THISTYPE=-TERQ OR NEXTSCH(←) OR NEXTSCH(:) THEN
SKIPLINES(1)
ELSE IF DIMENSIONED(1, K) THEN
BEGIN
ASSUREAREA ;
IF GRPSKIP THEN MILLGSKIP(AREAIXM) ← MILLGSKIP(AREAIXM) + K
ELSE MILLSKIP(AREAIXM) ← MILLSKIP(AREAIXM) + K
END
ELSE SKIPLINES(K) ;
END ;
IF GRPSKIP AND GM = 0 THEN DAPART ;
END "DSKIP" ;
PUBLIC SIMPLE PROCEDURE DSPACING ;$"#
BEGIN "DSPACING" TES 11/2/74 ;
INTEGER L, M ;
PASS ;
IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
M ← ABS(MILLVERTI) ;
IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
MSPREADM ← M ;
SPREADM ← L + 1 ;
END "DSPACING" ;
PUBLIC RECURSIVE PROCEDURE SKIPLINES(INTEGER HMLINES) ;$"#
IF ON THEN
BEGIN "SKIPLINES"
ASSUREAREA ;
IF HMLINES > 0 THEN
IF GROUPM=0 THEN FIND!ROOM(-HMLINES, 0, COL, LINE, 0)
ELSE BEGIN "GROUP SKIP"
INTEGER I ;
FIND!ROOM(0, HMLINES, COL, LINE, 0) ;
IF NOT GLINEM THEN GLINEM ← OLX + 1 ;
IF COL>COLS AND LINE=0 THEN FTGP2 ← HMLINES TES 11/2/74;
ELSE
BEGIN
FOR I ← 1 THRU HMLINES DO AA[COL, LINE+I] ←
NEWBLANK(IF GLINEM=0 AND I=1 THEN ABV ELSE ABV!BLW) ;
LINE ← LINE + HMLINES ;
END ;
END "GROUP SKIP" ;
END "SKIPLINES" ;
PUBLIC RECURSIVE PROCEDURE TOLINE(INTEGER LINENO) ;$"#
IF ON THEN
BEGIN "TOLINE"
ASSUREAREA ;
IF LINENO < LINE THEN
IF COL = COLS THEN
BEGIN NEXTPAGE ; IF LINENO>1 THEN OPENAREA(AREAIXM) END
ELSE BEGIN COL ← COL+1 ; LINE ← 0 ; END ;
IF LINENO=1 THEN LINE←1 ELSE FIND!ROOM(0, 0, COL, LINENO-1, 0) ;
END "TOLINE" ;
FINISHED
ENDOF("VERTI")